//类类型：类的类型可以通过皆苦来实现
(() => {
    //定义接口
    interface IFly {
        fly()
    }

    //定义一个类，类的类型就是上面的接口(IFly就扣约束了当前的类)
    class Person implements IFly {
        fly() {
            console.log('飞飞飞')
        }
    }

    //实例化对象
    const person = new Person()
    person.fly()

    interface ISwim {
        swim()
    }

    class Person2 implements IFly, ISwim {
        fly() {
            console.log('飞飞飞2')
        }
        swim() {
            console.log('游泳...')
        }
    }
    //实例化对象
    const person2 = new Person2()
    person2.fly()
    person2.swim()

    //类可以通过接口的方式，来定义当前这个类
    //类可以实现一个接口。类也可以实现多个接口，注意接口中的内容都要实现

    //接口可以继承其他的多个接口

    interface  IFlyAndISwim extends IFly, ISwim{}

    class Person3 implements IFly, ISwim {
        fly() {
            console.log('飞飞飞3')
        }
        swim() {
            console.log('游泳...3')
        }
    }

    const person3 = new Person3()
    person3.fly()
    person3.swim()

    //接口和接口之间叫继承（extends）
    //类和接口之间叫实现（implements）

})()